package iso3.pt.action;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

import iso3.pt.model.*;
import iso3.pt.service.PtDaoService;
import iso3.pt.service.PtService;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;


/*
 * EN DESARROLLO
 * 
 * @author ander
 */
public class LoadStudentSubjectRegistrationForm  extends ActionSupport
{
	private static final long serialVersionUID = 1L;

	// Datos preparados para que los lea el JSP
	private Alumno alumno = null;
	
	private Set<Asignatura> listSubjects = null;

	
	public String execute() throws Exception
	{		
		// Preparar alumno
		@SuppressWarnings("rawtypes")
		Map session = ActionContext.getContext().getSession();
		alumno = (Alumno) session.get("alumno");	
		
		// Preparar lista asignaturas
		// Creo lo que voy a devolver
//		listSubjects = new ArrayList<String>();
		
		// Obtengo las asignaturas
		PtService service = new PtDaoService();
//		ArrayList<Asignatura> subjects = (ArrayList<Asignatura>) service.getAsignaturas();
//		for (Asignatura asignatura : subjects)
//		{
//			listSubjects.add(asignatura.getNombre());
//		}
		listSubjects = new HashSet<Asignatura>();
		
		Set<Asignatura> todas = service.getAsignaturas();
		
		Set<Asignatura> matriculadas = service.getAsignaturas(alumno.getDni());
		
		for (Asignatura asignaturaLista : todas)
		{
			boolean Encontrado = false;
			boolean Fin = false;
			Iterator<Asignatura> iterador = matriculadas.iterator();
			Asignatura asignaturaMatriculada = null;
			if (! iterador.hasNext())
				Fin = true;
			while (!Encontrado && !Fin)
			{
				asignaturaMatriculada = iterador.next();
				
				if (asignaturaLista.getCodigo() == asignaturaMatriculada.getCodigo())
				{
					Encontrado = true;
				}
				if (! iterador.hasNext())
					Fin = true;
			}
			if (! Encontrado)
				listSubjects.add(asignaturaLista);
		}

		return SUCCESS;
	}

	
	public Alumno getAlumno()
	{
		return alumno;
	}


	public void setAlumno(Alumno alumno)
	{
		this.alumno = alumno;
	}


	public Set<Asignatura> getListSubjects()
	{
		return listSubjects;
	}


	public void setListSubjects(Set<Asignatura> listSubjects)
	{
		this.listSubjects = listSubjects;
	}
}